#include "cmd.h"
#include "led.h"
#include "beep.h"
#include "string.h"
#include "at24c02.h"

//定义初始化硬件的命令结构体数组,每个成员保存着命令的信息
//将来咱们只需维护此数组即可，main函数一个字都不用动
cmd_t cmd_tbl[] = {
	{"led on", LED_On},	//开灯命令的信息
	{"led off", LED_Off},	//关灯命令的信息
	{"beep on", BEEP_On},	//开蜂鸣器命令的信息
	{"beep off", BEEP_Off},	//关蜂鸣器命令的信息
	{"EEPROM R", AT24C02_ReadOne}, //读取1字节AT24C02数据的命令
	{"EEPROM W", AT24C02_WriteOne}, //写1字节到AT24C0的命令
	{"EEPROM RS", AT24C02_ReadMul}, //连续读取多字节命令 
	{"EEPROM WS", AT24C02_WriteMul} //连续写入多字节命令 
};

//记录结构体数组元素个数
int cmd_num = sizeof(cmd_tbl) / sizeof(cmd_tbl[0]);

//定义命令的查找函数，根据上位机发送来的命令名称在上面的数组中cmd_tbl找对应的
//命令结构体的首地址，并且返回命令的结构体首地址
cmd_t *find_cmd(char *name) {
	int i;
	for(i = 0; i < cmd_num; i++) {
		if(!strcmp(name, cmd_tbl[i].name))
			return &cmd_tbl[i]; //匹配成功并且返回命令的首地址
	}
	return 0; //没有找到对应的命令对象
}

